https://github.com/apache/kafka/pull/17400
背景故事
不知道大家開始使用基於KRaft的版本了沒?如果還沒用過,麻煩務必請嘗試看看,這是kafka的趨勢也是未來走向。當然如果你是個先進的kafka使用者,那麼接下來要講的工具你一定很熟悉了,那就是kafka-storage.sh
在講kafka-storage.sh之前,先來講一下kafka新版的版本管理,這在之前的文章有提到,所以這裡簡單說一下,新版的Kafka要讓版本可以動態調整,也就是當你在跑Kafka 4.0的時候,可以動態調整讓Kafka只支援3.9的功能,也就是說Kafka需要知道現在叢集要跑哪一個版本,這也就是kafka-storage.sh一個很重要的任務,它可以根據使用者指定的版本來格式化元數據,如此叢集在啟動的時候就可以根據感謝元數據來打開或關閉特定的功能。以下提供一個簡單的使用案例:
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties —release-version 3.9.0
這個例子有三個選項,分別是:
cluster id,這是一個叢集的化身server.properties,這是啟動伺服器時的參數檔release version,這用來指定要支援哪個版本的功能這裡特別說明一下,cluster id在之前是需要為uuid的格式,但後來取消這個限制,當然對於使用者而言要產生cluster id難免有點害怕,所以kafka-storage.sh也很貼心的可以產生這個資訊:
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
講到這裡大家就可以知道Kafka-storage.sh是一個非常重要的工具,那麼這隻PR在解決什麼問題呢?其實就是最近在做release的時候太急,不小心使用了Scala 2.12無法相容的程式碼 ...
解決辦法
讓程式碼可以用scala 2.12編譯,這樣才可以在還支援scala 2.12的3.9.0釋出對應的二進制檔案
廣告
歡迎訂閱全臺最鬆散的開源社群源來適你,上面不定期會有各種開源的廢文。也歡迎參加全臺最鬆散的開源討論頻道,上面有一群網友一起在刷開源技術